package com.live.stamp.web.stamp.service;

import com.live.stamp.web.stamp.model.TStampComment;
import com.live.stamp.web.stamp.vo.TStampInfoVo;
import org.springframework.boot.container.core.common.BusinessException;
import org.springframework.boot.container.core.common.PageVO;

import java.util.Map;

/**
 * @author cwd E-mail: wendong.cao@jsxfedu.com
 * @version 1
 * @date 2018/4/13 14:37
 */
public interface StampService {

    /**
     * 发印记
     * @return
     * @throws BusinessException
     */
    String sendStamp(TStampInfoVo tStampInfoVo) throws BusinessException;

    /**
     * 删除印迹
     * @return
     * @throws BusinessException
     */
    String deleteStamp(String id) throws BusinessException;

    /**
     * 点赞
     * @param tStampInfoVo
     * @return
     * @throws BusinessException
     */
    String likeStamp(TStampInfoVo tStampInfoVo) throws BusinessException;

    /**
     * 评论印记
     * @param tStampInfoVo
     * @return
     * @throws BusinessException
     */
    TStampComment commentStamp(TStampInfoVo tStampInfoVo) throws BusinessException;

    /**
     * 印记列表
     * @param tStampInfoVo
     * @param pageNo
     * @param pageSize
     * @return
     * @throws BusinessException
     */
    PageVO<TStampInfoVo> stampList(TStampInfoVo tStampInfoVo, Integer pageNo, Integer pageSize) throws BusinessException;

    /**
     * 印记详情
     * @param tStampInfoVo
     * @return
     * @throws BusinessException
     */
    Map<String, Object> stampInfo(TStampInfoVo tStampInfoVo) throws BusinessException;

    /**
     * 好友、关注更新条数
     * @param tStampInfoVo
     * @return
     * @throws BusinessException
     */
    int stampListCount(TStampInfoVo tStampInfoVo) throws BusinessException;

    /**
     * 好友/关注 是否有更新
     * @return
     * @throws BusinessException
     */
    Map<String, Object> isStampUpdate() throws BusinessException;

    /**
     * 是否已点赞
     * @param userId
     * @param stampId
     * @return
     * @throws BusinessException
     */
    boolean isLike(String userId, String stampId) throws BusinessException;
}
